

import { OpenAI } from "openai";
import dotenv from "dotenv";

// 环境配置,加载环境变量
dotenv.config('./process.env');


//启动一个进程
//在进程中加载环境变量 env环境对象
//什么是进程 ? 进程是一个程序的执行过程,分配资源的最小单位
//console.log(process.env.OPENAI_API_KEY)
const client =new OpenAI({
    //process 是node里面的进程对象
    apiKey: process.env.OPENAI_API_KEY, 
    baseURL: process.env.OPENAI_BASE_URL
})

//es6 的默认参数值 model = "gpt-3.5-turbo"
//通用LLM完成接口函数的调用
//model = "gpt-3.5-turbo" 默认参数值 可选参数
const getComleteion = async (prompt , model = "gpt-3.5-turbo") => {
   const messages = [{
        role: "user",
        content: prompt,
   }];

   const response = await client.chat.completions.create({
        model : model,
        messages : messages,
        temperature : 0.1,
   })

   return response.choices[0].message.content;

};

const main= async () =>{
    //const声明 进入词法环境中
    const user_messages =[
        "La performance du systeme est plus lente que d'habitude.", ///系统的性能比平时慢
        "Mi monitor tiene pixeles que no se iluminan.",//我的显示器有些像素
        "Il mio mouse non funziona",//我的鼠标坏了
        "M6j klawisz Ctrl jest zepsuty",//我的ctrl键坏了
        "我的屏幕在闪烁"
    ]
    // for of es6 的遍历数组的方式
    //和计数循环  ,有什么好的地方 ?  答 : 可读性高 , 简洁明了
    for(let issue of user_messages){
        const resultPrompt = `请帮我翻译为中文: ${issue}`
        const result = await getComleteion(resultPrompt)
        console.log(result)
    }
    
    //console.log(issue)
    //问什么在外面  ,访问不到issue ?  答: 因为issue是因为在词法变量环境中 , 不断入栈 , 之后出栈,  被垃圾回收机制回收,所以在外面访问不到issue
    //变量提升 ? 作用域 ? 执行上下文 ? 上下文栈 ?   

    const prompt = ` Tell me what language is this: ${user_messages}`

    const response = await getComleteion(prompt);
    
    const resultPrompt = `请帮我翻译为中文: ${response}`

    const result = await getComleteion(resultPrompt)

    console.log(result)

}

main()